<?php

namespace Mogod\Core\Data;

/**
 * Набор данных
 *
 * @author morph, goorus
 */
class DataSet
{
	/**
	 * Набор данных
	 *
	 * @var array
	 */
	protected $data;

	/**
	 * Конструктор
	 *
	 * @param array $data
	 */
	public function __construct($data = array())
	{
		$this->data = $data;
	}

	/**
	 * Получить набор данных в виде значения указанной колонки строк. Если имя
	 * колонки не задано, то будут получены значения первой колонки
	 *
	 * @param array $columnName
	 * @return array
	 */
	public function asColumn($columnName = null)
	{
		if ($this->data) {
			$first = $data[0];
			$columnName = $columnName ?: key($first);
			$result = array();
			foreach ($this->data as $data) {
				$result[] = isset($data[$columName]) ? $data[$columnName] : null;
			}
			return $result;
		}
	}

	/**
	 * Получить набор данных в виде значения первой строки
	 *
	 * @return array
	 */
	public function asRow()
	{
		if ($this->data) {
			return $this->data[0];
		}
	}

	/**
	 * Получить набор данных в виде таблицы
	 *
	 * @return array
	 */
	public function asTable()
	{
		return $this->data;
	}

	/**
	 * Получить набор данных в виде значения первой колонки первой строки
	 * @return type
	 */
	public function asValue()
	{
		if ($this->data) {
			return reset($this->data[0]);
		}
	}

	/**
	 * Изменить набор данных
	 *
	 * @param array $data
	 */
	public function setData($data)
	{
		$this->data = $data;
	}
}